package kr.pe.johnkim.app.mobile.rest.dao;

import kr.pe.johnkim.app.domain.MyHistoryItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import java.util.List;

/**
 * My History 아이템 관련 기능들을 구현한 클래스이다.
 * 
 * @author : johnkim <cale9797@gmail.com / Simple.ly Inc,>
 * @Date : 11. 12. 27
 */
public class MyHistoryItemDaoImpl extends SqlMapClientDaoSupport implements MyHistoryItemDao {
    // SLF4J Logging
	private Logger logger = LoggerFactory.getLogger(MyHistoryItemDaoImpl.class);

    /**
     * 아이템 중복 등록을 확인 한다.
     *
     * @param myHistoryItem
     * @return MyHistoryItem
     */
    public MyHistoryItem checkDuplication(MyHistoryItem myHistoryItem) {
        logger.info("checkDuplication");
        return (MyHistoryItem)getSqlMapClientTemplate().queryForObject("MYHISTORY_ITEM.checkDuplication", myHistoryItem);
    }

    /**
     * 아이템을 등록 한다.
     *
     * @param myHistoryItem
     * @return
     */
    public boolean registerItem(MyHistoryItem myHistoryItem) {
        logger.info("registerItem");

        boolean result = false;

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItem", myHistoryItem);
            result = true;
        } catch (Exception e) {
            result = false;
        }

        return result;
    }

    /**
     * 아이템 내용을 가져 온다.
     *
     * @param myHistoryItem
     * @return
     */
    public MyHistoryItem selectItem(MyHistoryItem myHistoryItem) {
        logger.info("selectItem");
        return (MyHistoryItem)getSqlMapClientTemplate().queryForObject("MYHISTORY_ITEM.selectItem", myHistoryItem);
    }

    /**
     * 아이템 목록을 가져 온다.
     *
     * @param myHistoryItem
     * @return List<MyHistoryItem>
     */
    public List<MyHistoryItem> selectItemList(MyHistoryItem myHistoryItem) {
        logger.info("selectItemList");
        return this.getSqlMapClientTemplate().queryForList("MYHISTORY_ITEM.selectItemList", myHistoryItem);
    }

    /**
     * Category 의 아이템 목록을 가져 온다.
     *
     * @param myHistoryItem
     * @return
     */
    @Override
    public List<MyHistoryItem> selectItemListForCategory(MyHistoryItem myHistoryItem) {
        logger.info("selectItemListForCategory");
        return this.getSqlMapClientTemplate().queryForList("MYHISTORY_ITEM.selectItemListForCategory", myHistoryItem);
    }

    /**
     * 아이템 내용을 수정 한다.
     *
     * @param myHistoryItem
     * @return True or False
     */
    public boolean updateItem(MyHistoryItem myHistoryItem) {
        logger.info("updateItem");

        boolean result = false;

        try {
            getSqlMapClientTemplate().update("MYHISTORY_ITEM.updateItem", myHistoryItem);
            result = true;
        } catch (Exception e) {
            result = false;
        }

        return result;
    }

    /**
     * 아이템을 비활성화 한다.
     *
     * @param myHistoryItem
     * @return
     */
    public boolean updateDeactivateItem(MyHistoryItem myHistoryItem) {
        logger.info("updateDeactivateItem");

        boolean result = false;

        try {
            getSqlMapClientTemplate().update("MYHISTORY_ITEM.updateDeactivateItem", myHistoryItem);
            result = true;
        } catch (Exception e) {
            result = false;
        }

        return result;
    }

    /**
     * 한식 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForKoreanFoodCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForKoreanFoodCategory");

        try {
//            logger.info("openItemYn                               : {}", myHistoryItem.getOpenItemYn());
//            logger.info("favoriteYn                               : {}", myHistoryItem.getFavoriteYn());
//            logger.info("activateYn                               : {}", myHistoryItem.getActivateYn());
//            logger.info("modifyDate                               : {}", myHistoryItem.getModifyDate());
//            logger.info("registerDate                             : {}", myHistoryItem.getRegisterDate());
//            logger.info("myHistoryMembersId                       : {}", myHistoryItem.getMyHistoryMembersId());
//            logger.info("myHistoryCategoriesIdMyHistoryCategories : {}", myHistoryItem.getMyHistoryCategoriesIdMyHistoryCategories());

            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForKoreanFoodCategory", myHistoryItem);

            logger.info("Success to register item list for Korean food category.");
        } catch (Exception e) {
            logger.error("Fail to registger item list for Korean food category.");
        }
    }

    /**
     * 중식 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForChineseFoodCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForChineseFoodCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForChineseFoodCategory", myHistoryItem);
            logger.info("Success to register item list for Chinese food category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Chinese food category.");
        }
    }

    /**
     * 양식 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForWesternFoodCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForWesternFoodCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForWesternFoodCategory", myHistoryItem);
            logger.info("Success to register item list for Western food category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Western food category.");
        }
    }

    /**
     * 간식 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForSnackCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForSnackCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForSnackCategory", myHistoryItem);
            logger.info("Success to register item list for Snack category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Snack category.");
        }
    }

    /**
     * 일식 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForJapaneseFoodCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForJapaneseFoodCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForJapaneseFoodCategory", myHistoryItem);
            logger.info("Success to register item list for Japanese food category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Japanese food category.");
        }
    }

    /**
     * 커피 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForCoffeeCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForCoffeeCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForCoffeeCategory", myHistoryItem);
            logger.info("Success to register item list for Coffee category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Coffee category.");
        }
    }

    /**
     * 음료수 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForDrinkCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForDrinkCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForDrinkCategory", myHistoryItem);
            logger.info("Success to register item list for Drink category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Drink category.");
        }
    }

    /**
     * 주류 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForAlcoholCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForAlcoholCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForAlcoholCategory", myHistoryItem);
            logger.info("Success to register item list for Alcohol category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Alcohol category.");
        }
    }

    /**
     * 차 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForTeaCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForTeaCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForTeaCategory", myHistoryItem);
            logger.info("Success to register item list for Tea category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Tea category.");
        }
    }

    /**
     * 혼자 놀기 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForPlayAloneCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForPlayAloneCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForPlayAloneCategory", myHistoryItem);
            logger.info("Success to register item list for Play alone category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Play alone category.");
        }
    }

    /**
     * 유흥 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForNightlifeCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForNightlifeCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForNightlifeCategory", myHistoryItem);
            logger.info("Success to register item list for Nightlife category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Nightlife category.");
        }
    }

    /**
     * 놀이 공간 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForPlayPlaceCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForPlayPlaceCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForPlayPlaceCategory", myHistoryItem);
            logger.info("Success to register item list for Play place category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Play place category.");
        }
    }

    /**
     * 과목 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForSubjectsCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForSubjectsCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForSubjectsCategory", myHistoryItem);
            logger.info("Success to register item list for Subjects category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Subjects category.");
        }
    }

    /**
     * 스터디 공간 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForStudyPlaceCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForStudyPlaceCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForStudyPlaceCategory", myHistoryItem);
            logger.info("Success to register item list for Study place category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Study place category.");
        }
    }

    /**
     * 공부 방법 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForStudyKnowHowCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForStudyKnowHowCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForStudyKnowHowCategory", myHistoryItem);
            logger.info("Success to register item list for Study know how category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Study know how category.");
        }
    }

    /**
     * 친구 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForFriendCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForFriendCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForFriendCategory", myHistoryItem);
            logger.info("Success to register item list for Friend category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Friend category.");
        }
    }

    /**
     * 애인 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForLoverCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForLoverCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForLoverCategory", myHistoryItem);
            logger.info("Success to register item list for Lover category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Lover category.");
        }
    }

    /**
     * 고객 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForCustomerCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForCustomerCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForCustomerCategory", myHistoryItem);
            logger.info("Success to register item list for Customer category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Customer category.");
        }
    }

    /**
     * 모임 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForGatheringCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForGatheringCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForGatheringCategory", myHistoryItem);
            logger.info("Success to register item list for Gathering category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Gathering category.");
        }
    }

    /**
     * 영화 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForMovieCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForMovieCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForMovieCategory", myHistoryItem);
            logger.info("Success to register item list for Movie category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Movie category.");
        }
    }

    /**
     * 공연 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForPerformanceCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForPerformanceCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForPerformanceCategory", myHistoryItem);
            logger.info("Success to register item list for Performance category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Performance category.");
        }
    }

    /**
     * 여행 Category 에 해당 하는 item 목록을 가져 온다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForTravelCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForTravelCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForTravelCategory", myHistoryItem);
            logger.info("Success to register item list for Travel category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Travel category.");
        }
    }

    /**
     * 독서 Category 에 해당 하는 item 목록을 가져 온다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForReadingCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForReadingCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForReadingCategory", myHistoryItem);
            logger.info("Success to register item list for Reading category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Reading category.");
        }
    }

    /**
     * 성적 Category 에 해당 하는 item 목록을 가져 온다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForAchievementCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForAchievementCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForAchievementCategory", myHistoryItem);
            logger.info("Success to register item list for Achievement category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Achievement category.");
        }
    }

    /**
     * 과제 Categgory 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForChallengeCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForChallengeCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForChallengeCategory", myHistoryItem);
            logger.info("Success to register item list for Challenge category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Challenge category.");
        }
    }

    /**
     * 수업 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForClassCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForClassCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForClassCategory", myHistoryItem);
            logger.info("Success to register item list for Class category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Class category.");
        }
    }

    /**
     * 방문 고객수 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForVisitCustomerCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForVisitCustomerCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForVisitCustomerCategory", myHistoryItem);
            logger.info("Success to register item list for Visit customer category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Visit customer category.");
        }
    }

    /**
     * 퇴근 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForGoHomeCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForGoHomeCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForGoHomeCategory", myHistoryItem);
            logger.info("Success to register item list for Go home category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Go home category.");
        }
    }

    /**
     * 휴일 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForHolidayCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForHolidayCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForHolidayCategory", myHistoryItem);
            logger.info("");
        } catch (Exception e) {
            logger.error("");
        }
    }

    /**
     * 팀워크 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForTeamWorkCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForTeamWorkCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForTeamWorkCategory", myHistoryItem);
            logger.info("Success to register item list for Teamwork category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Teamwork catgegory.");
        }
    }

    /**
     * 집안일 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForHouseWorkCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForHouseWorkCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForHouseWorkCategory", myHistoryItem);
            logger.info("Success to register item list for Home work category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Home work category.");
        }
    }

    /**
     * 육아 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForChildCareCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForChildCareCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForChildCareCategory", myHistoryItem);
            logger.info("Success to register item list for ChildCare category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for ChildCare category.");
        }
    }

    /**
     * 차량 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForCarCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForCarCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForCarCategory", myHistoryItem);
            logger.info("Success to register item list for Car category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Car category.");
        }
    }

    /**
     * 헬쓰 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForHealthCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForHealthCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForHealthCategory", myHistoryItem);
            logger.info("Success to register item list for Health category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Health category.");
        }
    }

    /**
     * 구기 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForBallCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForBallCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForBallCategory", myHistoryItem);
            logger.info("Success to register item list for Ball category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Ball category.");
        }
    }

    /**
     * 레저 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForLeisureCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForLeisureCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForLeisureCategory", myHistoryItem);
            logger.info("Success to register item list for Leisure category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Leisure category.");
        }
    }

    /**
     * 질병 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForDiseaseCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForDiseaseCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForDiseaseCategory", myHistoryItem);
            logger.info("Success to register item list for Disease category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Disease category.");
        }
    }

    /**
     * 치료 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForTreatmentCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForTreatmentCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForTreatmentCategory", myHistoryItem);
            logger.info("Success to register item list for Treatment category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Treatment category.");
        }
    }

    /**
     * 건강 보조 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForHealthSupportCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForHealthSupportCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForHealthSupportCategory", myHistoryItem);
            logger.info("Success to register item list for Health support category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Health support category.");
        }
    }

    /**
     * 활동 시간 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForPlayHourCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForPlayHourCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForPlayHourCategory", myHistoryItem);
            logger.info("Success to register item list for Play hour category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Play hour category.");
        }
    }

    /**
     * 일과 시간 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForWorkHourCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForWorkHourCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForWorkHourCategory", myHistoryItem);
            logger.info("Success to register item list for Work hour category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Work hour category.");
        }
    }

    /**
     * 이동 시간 Catgegory 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForTransportHourCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForTransportHourCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForTransportHourCategory", myHistoryItem);
            logger.info("Success to register item list for Transport hour category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Transport hour category.");
        }
    }

    /**
     * 피부 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForSkinCareCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForSkinCareCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForSkinCareCategory", myHistoryItem);
            logger.info("Success to register item list for Skincare category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Skincare category.");
        }
    }

    /**
     * 모발 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForHairCareCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForHairCareCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForHairCareCategory", myHistoryItem);
            logger.info("Success to register item list for Haircare category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Haircare category.");
        }
    }

    /**
     * 손발톱 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForNailCareCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForNailCareCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForNailCareCategory", myHistoryItem);
            logger.info("Success to register item list for Nail care category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Nail care category.");
        }
    }

    /**
     * 개인 위생 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForPersonalHygieneCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForPersonalHygieneCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForPersonalHygieneCategory", myHistoryItem);
            logger.info("Success to register item list for Personal hygiene category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Personal hygiene category.");
        }
    }

    /**
     * 옷 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForClothCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForClothCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForClothCategory", myHistoryItem);
            logger.info("Success to register item list for Cloth category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Cloth category.");
        }
    }

    /**
     * 악세사리 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForAccessoriesCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForAccessoriesCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForAccessoriesCategory", myHistoryItem);
            logger.info("Success to register item list for Accessories category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Accessories category.");
        }
    }

    /**
     * 속옷 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    @Override
    public void registerItemListForUnderWareCategory(MyHistoryItem myHistoryItem) {
        logger.info("registerItemListForUnderWareCategory");

        try {
            getSqlMapClientTemplate().insert("MYHISTORY_ITEM.registerItemListForUnderWareCategory", myHistoryItem);
            logger.info("Success to register item list for Under ware category.");
        } catch (Exception e) {
            logger.error("Fail to register item list for Under ware category.");
        }
    }
}
